// 导入数据库db对象
const db = require('../config/db');

// 模块系统对象
module.exports = {
    // 1. 添加收藏
    addLike(article_id, user_id, article_title) {
        return new Promise((resolve, reject) => {
            //先判断这篇文章是否已经收藏
            db.query(`select article_id from c_like where article_id = '${article_id}' and user_id = '${user_id}'`)
                .then(
                    rows => {
                        // console.log({rows})
                        // 未收藏
                        if (rows.length == 0) {
                            let sql = `insert into c_like(article_id, user_id, article_title) 
                        values('${article_id}','${user_id}','${article_title}')`;
                            // 执行sql语句
                            db.query(sql)
                                .then(
                                    rows => {
                                        resolve({
                                            code: 200,
                                            msg: '添加收藏成功。'
                                        })
                                    }
                                )
                                .catch(
                                    error => {
                                        reject({
                                            code: -1,
                                            msg: '添加收藏失败。'
                                        })
                                    }
                                )
                        }
                        // 已收藏
                        else {
                            resolve({
                                code: 1,
                                msg: '该文章已收藏。'
                            })
                        }
                    }
                )
        })
    },
    // 2. 取消收藏
    removeLike(article_id, user_id) {
        console.log(article_id, user_id)
        return new Promise((resolve, reject) => {
            db.query(`select * from c_like where article_id='${article_id}' and user_id = '${user_id}'`)
                .then(
                    // rows： 是数组，是数据库查询的结果
                    async (rows) => {
                        console.log('取消',{rows})
                        if (rows.length == 1) {
                            // 删除数据
                            let sql = `delete from c_like where article_id = '${article_id}'`
                            await db.query(sql)
                                .then(
                                    result => {
                                        resolve({
                                            code: 200,
                                            msg: '取消收藏成功。'
                                        })
                                    }
                                )
                                .catch(
                                    error => {
                                        resolve({
                                            code: -1,
                                            msg: '取消收藏失败。'
                                        })
                                    }
                                )
                        }
                        else {
                            resolve({
                                code: 404,
                                msg: '该文章还未收藏。'
                            })
                        }
                    }
                )
                .catch(
                    err => {
                        reject({
                            code: -1,
                            msg: '查询数据失败。',
                            err
                        })
                    }
                )
        })
    },
    // 3. 获取收藏
    getDetailLike(article_id, user_id) {
        return new Promise((resolve, reject) => {
            db.query(`select * from c_like where article_id='${article_id}' and user_id = '${user_id}'`)
                .then(
                    // rows： 是数组，是数据库查询的结果
                    async (rows) => {
                        if (rows.length == 1) {
                            resolve({
                                code: 200,
                                msg: '该文章已经收藏。',
                                article_id
                            })
                        }
                        else {
                            resolve({
                                code: 404,
                                msg: '该文章还未收藏。'
                            })
                        }
                    }
                )
                .catch(
                    err => {
                        reject({
                            code: -1,
                            msg: '查询数据失败。',
                            err
                        })
                    }
                )
        })
    },
    // 4. 获取收藏列表
    getLikes(user_id) {
        return new Promise((resolve, reject) => {
            db.query(`select * from c_like where user_id = '${user_id}'`)
                .then(
                    // rows： 是数组，是数据库查询的结果
                    (rows) => {
                        resolve({
                            code: 200,
                            msg: '收藏列表。',
                            result: [...rows]
                        })
                    }
                )
                .catch(
                    err => {
                        reject({
                            code: -1,
                            msg: '查询数据失败。',
                            err
                        })
                    }
                )
        })
    },
}